package com.sybil.ot.dominio;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

@Entity
@Table(name = "SIL_ZONAS")
public class Zona implements Serializable {

   private static final long serialVersionUID = 1L;
   private String clave;
   private String regionClave;
   private String descripcion;
   private String descripcionCorta;
   private String activo;
//   @OneToMany(cascade = CascadeType.ALL, mappedBy = "zona", fetch = FetchType.LAZY)
//   private List<ResponsableZona> responsableZonaList;
//   @OneToMany(cascade = CascadeType.ALL, mappedBy = "ortrZonaClave", fetch = FetchType.LAZY)
//   private List<OrdenTrabajo> ordenTrabajoList;

   public Zona() {
   }

   public Zona(String clave) {
      this.clave = clave;
   }

   public Zona(String clave, String descripcion, String descripcionCorta, String activo) {
      this.clave = clave;
      this.descripcion = descripcion;
      this.descripcionCorta = descripcionCorta;
      this.activo = activo;
   }

   @Id
   @NotNull
   @Pattern(regexp = "^[a-zA-Z0-9_]*$", message = "Sólo se aceptan letras, números y '_'")
   @Size(min = 1, max = 4, message = "La Clave debe tener entre 1 y 4 caracteres")
   @Basic(optional = false)
   @Column(name = "ZONA_CLAVE")
   public String getClave() {
      return clave;
   }

   public void setClave(String clave) {
      this.clave = clave;
   }

   @Basic(optional = false)
   @Column(name = "ZONA_REGI_CLAVE")
   public String getRegionClave() {
      return regionClave;
   }

   public void setRegionClave(String regionClave) {
      this.regionClave = regionClave;
   }

   @Basic(optional = false)
   @Column(name = "ZONA_DESCRIPCION")
   public String getDescripcion() {
      return descripcion;
   }

   public void setDescripcion(String descripcion) {
      this.descripcion = descripcion;
   }

   @Column(name = "ZONA_DESC_CORTA")
   public String getDescripcionCorta() {
      return descripcionCorta;
   }

   public void setDescripcionCorta(String descripcionCorta) {
      this.descripcionCorta = descripcionCorta;
   }

   @Basic(optional = false)
   @Column(name = "ZONA_ACTIVO")
   public String getActivo() {
      return activo;
   }

   public void setActivo(String activo) {
      this.activo = activo;
   }

   @Override
   public int hashCode() {
      int hash = 0;
      hash += (clave != null ? clave.hashCode() : 0);
      return hash;
   }

   @Override
   public boolean equals(Object object) {
      if (!(object instanceof Zona)) {
         return false;
      }
      Zona other = (Zona) object;
      if ((this.clave == null && other.clave != null) || (this.clave != null && !this.clave.equals(other.clave))) {
         return false;
      }
      return true;
   }

   @Override
   public String toString() {
      return "Zona[ clave=" + clave + " ]";
   }
}
